﻿namespace Vaccination.API.Repositories
{
    /// <summary>
    /// 疫苗接种存储
    /// </summary>
    public interface IVaccinationInfoRepository
    {
        /// <summary>
        /// 添加疫苗接种预约信息
        /// </summary>
        /// <param name="vaccineInfo"></param>
        /// <returns></returns>
        Task<VaccinationInfo> AddAsync(VaccinationInfo vaccineInfo);

        /// <summary>
        /// 更新疫苗接种（预约）信息
        /// </summary>
        /// <param name="vaccineInfo"></param>
        /// <returns></returns>
        Task UpdateAsync(VaccinationInfo vaccineInfo);

        /// <summary>
        /// 按Id获取疫苗接种（预约）信息
        /// </summary>
        /// <param name="vaccineId">疫苗信息Id</param>
        /// <returns></returns>
        Task<VaccinationInfo?> GetByIdAsync(Guid vaccineId);

        /// <summary>
        /// 按Id获取疫苗接种（预约）信息
        /// </summary>
        /// <param name="vaccineId">疫苗信息Id</param>
        /// <returns></returns>
        Task DeleteAsync(Guid vaccineId);

        /// <summary>
        /// 分页获取疫苗接种（预约）信息
        /// </summary>
        /// <param name="pageInput">分页输入</param>
        /// <returns></returns>
        Task<(int total, List<VaccinationInfo> vaccinationInfos)> GetByPage(VaccinationPageInput pageInput);
    }
}
